疑難排解 pub
發佈套件時收到「403」錯誤
#執行 pub publish
時收到以下錯誤訊息
HTTP error 403: Forbidden
...
You aren't an uploader for package '<foo>'
如果您的一個帳戶被授予發佈套件的權限,但 pub 用戶端使用另一個帳戶註冊您,則可能會發生此問題。
您可以刪除 pub 憑證檔案來重設 pub 的驗證程序
Linux
#如果已定義 $XDG_CONFIG_HOME
$ rm $XDG_CONFIG_HOME/dart/pub-credentials.json
否則
$ rm $HOME/.config/dart/pub-credentials.json
macOS
#$ rm $HOME/Library/Application Support/dart/pub-credentials.json
Windows
#如果您使用命令提示字元
$ del "%APPDATA%\dart\pub-credentials.json"
如果您使用 PowerShell
$ Remove-Item -Path "%APPDATA%\dart\pub-credentials.json"
發佈套件時收到「UnauthorizedAccess」錯誤
#執行 pub publish
時收到以下錯誤訊息
UnauthorizedAccess: Unauthorized user: <username> is not allowed to upload versions to package '<foo>'.
如果您不在授權發佈套件新版本的人員名單中,您將會看到此訊息。請參閱上傳者。
Pub 建置失敗並出現 HttpException 錯誤
#執行 pub build
時收到類似以下的 HttpException 錯誤
Pub build failed, [1] IsolateSpawnException: 'HttpException: Connection closed while receiving data,
...
library handler failed
...
這可能是由於某些防毒軟體(例如 AVG 2013 Internet Security Suite)所導致。請查看您的安全套件手冊,瞭解如何暫時停用此功能。例如,請參閱如何停用 AVG 元件。
Pub get 在公司防火牆後方失敗
#從命令列中,pub 會採用 http_proxy
和 https_proxy
環境變數。您可以如下設定 Proxy 伺服器環境變數。
在 Linux/macOS 上
$ export https_proxy=hostname:port
在 Windows 命令提示字元中
$ set https_proxy=hostname:port
在 Windows PowerShell 中
$ $Env:https_proxy="hostname:port"
如果 Proxy 需要憑證,您可以如下設定。
在 Linux/macOS 上
$ export https_proxy=username:password@hostname:port
在 Windows 命令提示字元中
$ set https_proxy=username:password@hostname:port
在 Windows PowerShell 中
$ $Env:https_proxy="username:password@hostname:port"
登入後無法連線 Localhost
#當您在容器中或透過 SSH 連線執行 dart pub publish
時,dart pub
正在監聽的 localhost
可能與您的瀏覽器可存取的 localhost
不同。雖然您可以使用瀏覽器登入,但瀏覽器隨後會抱怨 http://localhost:<port>?code=...
無法連線。
嘗試使用此變通方法,它使用命令列完成登入
在終端機視窗中,執行
dart pub publish
。在彈出的瀏覽器視窗中,登入。
瀏覽器會重新導向至新的 localhost URL (http://localhost:<port>?code=...
),但抱怨該 URL 無法連線。從瀏覽器複製新的 localhost URL。
在與呼叫
dart pub publish
的容器或主機相同的另一個終端機視窗中,使用curl
命令,使用新的 localhost URL 完成登入$ curl 'http://localhost:<port>?code=...'
嘗試尋找套件時收到 Socket 錯誤
#如果您沒有網際網路連線、您的 ISP 封鎖了 pub.dev
,或安全性軟體封鎖了來自 dart
的網際網路存取,則可能會發生以下錯誤。
Got socket error trying to find package ... at https://pub.dev.
pub get failed (server unavailable) -- attempting retry 1 in 1 second...
檢查您的網際網路連線,並確認您沒有防火牆或其他安全性軟體封鎖來自 dart
的網際網路存取。
Kaspersky Internet Security 的詳細指示
當您從選單列關閉Kaspersky Internet Security 保護時,VPN 應用程式篩選器 sysextctrld
仍在背景執行。此篩選器會導致無法連線到 pub.dev
。若要解決此問題,請將 https://pub.dev
和 https://pub.dartlang.org
都新增到信任區域
- 開啟 Kaspersky Internet Security。
- 點擊隱私權圖示。
- 在封鎖網站追蹤區段下,點擊偏好設定按鈕。
- 在頂端圖示列中,選取威脅。
- 在威脅下,點擊信任區域。
- 選取信任的網址標籤。
- 點擊 + 按鈕,並新增 URL
https://pub.dev
。 - 點擊確定。
- 針對
https://pub.dartlang.org
重複前兩個步驟
除非另有說明,否則本網站上的文件反映的是 Dart 3.7.1 版本。頁面最後更新於 2024-02-07。 檢視原始碼 或回報問題。